package entidades.politica;

import java.util.ArrayList;
import java.util.Random;

import util.exceptions.NaoExisteBlocoASerTrocadoException;
import entidades.Peer;

public class PoliticaSelecaoBlocosRandomica extends PoliticaSelecaoBlocos {

	@Override
	public int seleciona(Peer peerOrigem, Peer peerDestino) throws NaoExisteBlocoASerTrocadoException {
		ArrayList<Integer> blocosUteis = super.selecionaBlocosUteis(peerOrigem, peerDestino);
		
		if (blocosUteis.isEmpty()) {
			throw new NaoExisteBlocoASerTrocadoException();
		}
		
		return selecionaBloco(blocosUteis);
	}

	@Override
	public int seleciona(Peer peerDestino) {
		ArrayList<Integer> blocosUteis = super.selecionaBlocosUteis(peerDestino);
		
		return selecionaBloco(blocosUteis);
	}
	
	private int selecionaBloco(ArrayList<Integer> blocosUteis) {
		Random random = new Random();
		int pos = random.nextInt(blocosUteis.size());
		
		return blocosUteis.get(pos);
	}

}
